Technologies for end of frame detection in streaming content

ABSTRACT

Technologies for end of frame marking and detection in streaming digital media content include a source computing device communicatively coupled to a destination computing device. The source computing device is configured to encode a frame of digital media content and insert an end of frame marker into a transport stream header of a network packet that includes an encoded payload corresponding to a chunk of data of the frame of digital media content. The destination computing device is configured to de-packetize received network packets and parse the transport stream headers of the received network packets to determine whether the network packet corresponds to an end of frame of the frame of digital media content. The destination computing device is further configured to transmit the encoded payloads of the received network packets to a decoder in response to a determination that the end of frame network packet has been received. Other embodiments are described and claimed.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application is a continuation of U.S. patent applicationSer. No. 16/543,085 (now U.S. Pat. No. 10,805,366), which is titled“TECHNOLOGIES FOR END OF FRAME DETECTION IN STREAMING CONTENT,” andwhich was filed on Aug. 16, 2019, which is a divisional application ofU.S. patent application Ser. No. 14/998,230 (now U.S. Pat. No.10,389,773), which is titled “TECHNOLOGIES FOR END OF FRAME DETECTION INSTREAMING CONTENT,” and which was filed on Dec. 26, 2015, which claimspriority under 35 U.S.C. § 119(e) to U.S. Provisional Application Ser.No. 62/244,020, which is titled “TECHNOLOGIES FOR END OF FRAME DETECTIONIN STREAMING CONTENT,” and which was filed on Oct. 20, 2015. U.S. patentapplication Ser. No. 16/543,085, U.S. patent application Ser. No.14/998,230, and U.S. Provisional Application No. 62/244,020 are herebyincorporated by reference herein in their respective entireties.

BACKGROUND

Traditionally, playback of digital media content (e.g., movies, music,pictures, games, etc.) has been constrained to the computing device(e.g., desktop computer, smartphone, tablet, wearable, gaming system,television, etc.) on which the digital media content was stored.However, with the advent of cloud computing related technologies andincreased capabilities of computing devices, services such as digitalmedia content streaming, casting, and mirroring have sped up thegeneration, sharing, and consumption of digital media content asconsumer devices capable of interacting with such content have becomeubiquitous.

To deal with such vast amounts of data transfer in the on-demandlandscape, various compression technologies have been implemented tosupport the streaming of digital media content in real-time with reducedlatency. Such compression technologies (i.e., codecs and containers)include Moving Picture Experts Group standards (e.g., MPEG-2, MPEG-4,H.264, etc.) and MPEG transport stream (MPEG-TS). Further, variousnetwork control protocols, such as real time streaming protocol (RTSP),for example, have been developed for establishing and controlling mediasessions between endpoint computing devices. Finally, various transportprotocols (e.g., real-time transport protocol (RTP)) usable by theendpoint computing devices have been established for providingend-to-end network transport functions suitable for transmission of thedigital media content in real-time.

However, some frames are too large to transmit in a single packet,thereby requiring a series of network packets making up a particularframe having to be received by an endpoint computing device beforeprocessing. Such processing (e.g., encoding, decoding, packetizing,de-packetizing, multiplexing, etc.) can introduce latency associatedwith streaming digital media content in real-time. For example, inpresent technologies, an endpoint computing device receiving a networkpacket that includes a portion of a frame of video being streamed to theendpoint computing device may contain an indicator (e.g., one or morebits of a header of the network packet) as to whether the network packetcorresponds to the start of a new video frame. Accordingly, the endpointcomputing device may only send the previously accumulated portions ofthe frame to a decoder upon receiving a network packet that correspondsto the first portion of the next frame, thereby introducing furtherlatency into the decoding process.

BRIEF DESCRIPTION OF THE DRAWINGS

The concepts described herein are illustrated by way of example and notby way of limitation in the accompanying figures. For simplicity andclarity of illustration, elements illustrated in the figures are notnecessarily drawn to scale. Where considered appropriate, referencelabels have been repeated among the figures to indicate corresponding oranalogous elements.

FIG. 1 is a simplified block diagram of at least one embodiment of asystem for end of frame detection in streaming content;

FIG. 2 is a simplified block diagram of at least one embodiment of anenvironment of the source computing device of the system of FIG. 1 ;

FIG. 3 is a simplified block diagram of at least one embodiment of anenvironment of the destination computing device of the system of FIG. 1;

FIG. 4 is a simplified block diagram of at least one embodiment of aqueue of packetized network packets of a frame of digital media content;

FIG. 5 is a simplified block diagram of at least one embodiment ofillustrative fields of a header of one of the packetized network packetof the frame of digital media content of FIG. 4 ;

FIG. 6 is a simplified communication flow diagram of at least oneembodiment for performing an end of frame marking capability exchangebetween the source computing device of FIGS. 1 and 2 , and thedestination computing device of FIGS. 1 and 3 that may be executed bythe source computing device;

FIG. 7 is a simplified flow diagram of at least one embodiment for endof frame marking of streaming digital media content that may be executedby the source computing device of FIGS. 1 and 2 ; and

FIG. 8 is a simplified flow diagram of at least one embodiment for endof frame detection of streaming digital media content that may beexecuted by the destination computing device of FIGS. 1 and 3 .

DETAILED DESCRIPTION

While the concepts of the present disclosure are susceptible to variousmodifications and alternative forms, specific embodiments thereof havebeen shown by way of example in the drawings and will be describedherein in detail. It should be understood, however, that there is nointent to limit the concepts of the present disclosure to the particularforms disclosed, but on the contrary, the intention is to cover allmodifications, equivalents, and alternatives consistent with the presentdisclosure and the appended claims.

References in the specification to “one embodiment,” “an embodiment,”“an illustrative embodiment,” etc., indicate that the embodimentdescribed may include a particular feature, structure, orcharacteristic, but every embodiment may or may not necessarily includethat particular feature, structure, or characteristic. Moreover, suchphrases are not necessarily referring to the same embodiment. Further,when a particular feature, structure, or characteristic is described inconnection with an embodiment, it is submitted that it is within theknowledge of one skilled in the art to affect such feature, structure,or characteristic in connection with other embodiments whether or notexplicitly described. Additionally, it should be appreciated that itemsincluded in a list in the form of “at least one of A, B, and C” can mean(A); (B); (C); (A and B); (A and C); (B and C); or (A, B, and C).Similarly, items listed in the form of “at least one of A, B, or C” canmean (A); (B); (C); (A and B); (A and C); (B and C); or (A, B, and C).

The disclosed embodiments may be implemented, in some cases, inhardware, firmware, software, or any combination thereof. The disclosedembodiments may also be implemented as instructions carried by or storedon one or more transitory or non-transitory machine-readable (e.g.,computer-readable) storage media, which may be read and executed by oneor more processors. A machine-readable storage medium may be embodied asany storage device, mechanism, or other physical structure for storingor transmitting information in a form readable by a machine (e.g., avolatile or non-volatile memory, a media disc, or other media device).

In the drawings, some structural or method features may be shown inspecific arrangements and/or orderings. However, it should beappreciated that such specific arrangements and/or orderings may not berequired. Rather, in some embodiments, such features may be arranged ina different manner and/or order than shown in the illustrative figures.Additionally, the inclusion of a structural or method feature in aparticular figure is not meant to imply that such feature is required inall embodiments and, in some embodiments, may not be included or may becombined with other features.

Referring now to FIG. 1 , in an illustrative embodiment, a system 100for end of frame detection in streaming content (e.g., streaming digitalmedia content) includes a source computing device 102 communicativelycoupled to a destination computing device 106 via a communicationchannel 104. In use, the source computing device 102 streams digitalmedia content (e.g., video content, audio content, streaming textcontent, etc.) to the destination computing device 106 via thecommunication channel 104, which may be established over a wirelessconnection.

As will be described in further detail, prior to transmission of thedigital media content and subsequent to establishing the communicationchannel 104, the source computing device 102 is configured to encode(i.e., via an encoder of the source computing device 102, such as H.264)and packetize (i.e., via a packetizer of the source computing device102) a frame of digital media content into a plurality of networkpackets. Additionally, the source computing device 102 is configured toencapsulate the packetized stream of network packets using a containerformat, such as MPEG-TS. Each of the network packets includes a headerthat includes identifying information of the network packet and apayload that includes data corresponding to at least a portion of theframe of the digital media content. The source computing device 102 isfurther configured to mark each network packet with an end of frameindicator at a designated field or set of bits within the containerformat header prior to transmitting each network packet to thedestination computing device 106. In some embodiments, the marking maybe performed by the packetizer of the source computing device 102.

As will also be described in further detail below, the destinationcomputing device 106 is configured to receive the network packets fromthe source computing device 102 and determine whether each receivednetwork packet corresponds to an end of frame, such as by parsing thedesignated field or set of bits within a header of the received networkpacket. Upon receiving a network packet, the destination computingdevice 106 is further configured to accumulate the corresponding payloadwith other payloads of previously received network packets that werealso determined not to correspond to an end of frame. To do so, adepacketizer of the destination computing device 106 may be configuredto parse end of frame markers from a header of the container and sendthe accumulated payloads to a decoder of the destination computingdevice 106, upon determining a received network packet indicates that itis the last network packet of the frame (i.e., an end of frame networkpacket).

As such, unlike present technologies that detect a payload startindicator, latency attributable to an amount of time between detectingthe last payload (i.e., an end of frame) and a first payload is reducedor otherwise eliminated. Further, unlike present technologies thatrequire parsing of a field/bit of the H.264 header of the encodedpayload to identify an end of frame indicator, the destination computingdevice 106 is configured to parse the transport stream header (e.g., theMPEG2-TS header) to identify the end of frame indicator.

It should be appreciated that the streaming of media content may includestreaming, casting, and/or mirroring digital media content from thesource computing device 102 to the destination computing device 106. Itshould be further appreciated that, while the context of the presentdisclosure is described below as marking frames of video content, suchfunctionality described herein may be usable for other forms of digitalmedia content that may be encoded and chunked, or otherwise packetized,prior to transmission, such that a network packet that includes a lastpayload of chunked data is capable of being determined as describedherein.

The source computing device 102 may be embodied as any type of computingdevice that is capable of performing the functions described herein,such as, without limitation, a portable computing device (e.g.,smartphone, tablet, laptop, notebook, wearable, etc.) that includesmobile hardware (e.g., processor, memory, storage, wirelesscommunication circuitry, etc.) and software (e.g., an operating system)to support a mobile architecture and portability, a computer, a server(e.g., stand-alone, rack-mounted, blade, etc.), a network appliance(e.g., physical or virtual), a web appliance, a distributed computingsystem, a processor-based system, a multiprocessor system, a set-topbox, and/or any other computing/communication device capable ofperforming the functions described herein.

The illustrative source computing device 102 includes a processor (i.e.,a CPU) 110, an input/output (I/O) subsystem 112, a memory 114, agraphics processing unit (GPU) 116, a data storage device 118, andcommunication circuitry 120, as well as, in some embodiments, one ormore peripheral devices 124. Of course, the source computing device 102may include other or additional components in other embodiments, such asthose commonly found in a computing device. Additionally, in someembodiments, one or more of the illustrative components may beincorporated in, or otherwise form a portion of, another component. Forexample, in some embodiments, the memory 114, or portions thereof, maybe incorporated in the processor 110. Further, in some embodiments, oneor more of the illustrative components may be omitted from the sourcecomputing device 102.

The processor 110 may be embodied as any type of processor capable ofperforming the functions described herein. Accordingly, the processor110 may be embodied as a single or multi-core processor(s), digitalsignal processor, microcontroller, or other processor orprocessing/controlling circuit. The memory 114 may be embodied as anytype of volatile or non-volatile memory or data storage capable ofperforming the functions described herein. In operation, the memory 114may store various data and software used during operation of the sourcecomputing device 102, such as operating systems, applications, programs,libraries, and drivers.

The memory 114 is communicatively coupled to the processor 110 via theI/O subsystem 112, which may be embodied as circuitry and/or componentsto facilitate input/output operations with the processor 110, the memory114, and the GPU 116, as well as other components of the sourcecomputing device 102. For example, the I/O subsystem 112 may be embodiedas, or otherwise include, memory controller hubs, input/output controlhubs, firmware devices, communication links (i.e., point-to-point links,bus links, wires, cables, light guides, printed circuit board traces,etc.) and/or other components and subsystems to facilitate theinput/output operations. In some embodiments, the I/O subsystem 112 mayform a portion of a system-on-a-chip (SoC) and be incorporated, alongwith the processor 110, the memory 114, and other components of thesource computing device 102, on a single integrated circuit chip.

The GPU 116 may be embodied as circuitry and/or components to handlespecific types of tasks assigned to the GPU 116, such as imagerendering, for example. To do so, the GPU 116 may include an array ofprocessor cores or parallel processors (not shown), each of which canexecute a number of parallel and concurrent threads. In someembodiments, the processor cores of the GPU 116 may be configured toindividually handle 3D rendering tasks, blitter (e.g., 2D graphics),and/or video encoding/decoding tasks, by providing electronic circuitrythat can perform mathematical operations rapidly using extensiveparallelism and multiple concurrent threads. It should be appreciatedthat, in some embodiments, the GPU 116 may have direct access to thememory 114, thereby allowing direct memory access (DMA) functionality insuch embodiments.

The data storage device 118 may be embodied as any type of device ordevices configured for short-term or long-term storage of data such as,for example, memory devices and circuits, memory cards, hard diskdrives, solid-state drives, or other data storage devices. It should beappreciated that the data storage device 118 and/or the memory 114(e.g., the computer-readable storage media) may store various data asdescribed herein, including operating systems, applications, programs,libraries, drivers, instructions, etc., capable of being executed by aprocessor (e.g., the processor 110) of the source computing device 102.

The communication circuitry 120 may be embodied as any communicationcircuit, device, or collection thereof, capable of enablingcommunications between the source computing device 102 and othercomputing devices (e.g., the destination computing device 106 and/orother computing devices communicatively coupled to the source computingdevice 102) over a wired or wireless communication channel (e.g., thecommunication channel 104). The communication circuitry 120 may beconfigured to use any one or more wired or wireless communicationtechnologies and associated protocols (e.g., Ethernet, Wi-Fi®, Wi-FiDirect®, Bluetooth®, Bluetooth® Low Energy (BLE), near-fieldcommunication (NFC), Worldwide Interoperability for Microwave Access(WiMAX), etc.) and/or certified technologies (e.g., Digital LivingNetwork Alliance (DLNA), Miracast™, etc.) to affect such communication.The communication circuitry 120 may be additionally configured to useany one or more wireless and/or wired communication technologies andassociated protocols to effect communication with other computingdevices, such as over a network, for example.

The illustrative communication circuitry 120 includes a networkinterface controller (NIC) 122. The MC 122 may be embodied as one ormore add-in-boards, daughtercards, network interface cards, controllerchips, chipsets, or other devices that may be used by the sourcecomputing device 102. In some embodiments, for example, the NIC 122 maybe integrated with the processor 110, embodied as an expansion cardcoupled to the I/O subsystem 112 over an expansion bus (e.g., PCIExpress), included as a part of a SoC that includes one or moreprocessors, or included on a multichip package that also contains one ormore processors.

The peripheral devices 124 may include any number of I/O devices,interface devices, and/or other peripheral devices. For example, in someembodiments, the peripheral devices 124 may include a display, a touchscreen, graphics circuitry, a keyboard, a mouse, a microphone, aspeaker, and/or other input/output devices, interface devices, and/orperipheral devices. The particular devices included in the peripheraldevices 124 may depend on, for example, the type and/or intended use ofthe source computing device 102. The peripheral devices 124 mayadditionally or alternatively include one or more ports, such as auniversal serial bus (USB) port, a high-definition multimedia interface(HDMI) port, etc., for connecting external peripheral devices to thesource computing device 102.

In the illustrative embodiment, the communication channel 104 isembodied as a direct line of communication (i.e., no wireless accesspoint) between the source computing device 102 and the destinationcomputing device 106. For example, the communication channel 104 may beestablished over an ad hoc peer-to-peer connection, such as Wi-FiDirect®, Intel® Wireless Display (WiDi), etc. Alternatively, in someembodiments, the communication channel 104 may be embodied as any typeof wired or wireless communication network, including a wireless localarea network (WLAN), a wireless personal area network (WPAN), a cellularnetwork (e.g., Global System for Mobile Communications (GSM), Long-TermEvolution (LTE), etc.), a telephony network, a digital subscriber line(DSL) network, a cable network, a local area network (LAN), a wide areanetwork (WAN), a global network (e.g., the Internet), or any combinationthereof. It should be appreciated that, in such embodiments, thecommunication channel 104 may serve as a centralized network and, insome embodiments, may be communicatively coupled to another network(e.g., the Internet). Accordingly, in such embodiments, thecommunication channel 104 may include a variety of virtual and/orphysical network devices (not shown), such as routers, switches, networkhubs, servers, storage devices, compute devices, etc., as needed tofacilitate the transfer of data between the source computing device 102and the destination computing device 106.

The destination computing device 106 may be embodied as any type ofcomputation or computing device capable of performing the functionsdescribed herein, including, without limitation, a computer, a portablecomputing device (e.g., smartphone, tablet, laptop, notebook, wearable,etc.), a “smart” television, a cast hub, a cast dongle, aprocessor-based system, and/or a multiprocessor system. Similar to theillustrative source computing device 102, the destination computingdevice 106 includes a processor 130, an I/O subsystem 132, a memory 134,a GPU 136, a data storage device 138, communication circuitry 140 thatincludes a NIC 142, and one or more peripheral devices 144. As such,further descriptions of the like components are not repeated herein withthe understanding that the description of the corresponding componentsprovided above in regard to the source computing device 102 appliesequally to the corresponding components of the destination computingdevice 106.

Referring now to FIG. 2 , in an illustrative embodiment, the sourcecomputing device 102 establishes an environment 200 during operation.The illustrative environment 200 includes a communication managementmodule 210, a frame marking capability determination module 220, and astreaming packet management module 230. The various modules of theenvironment 200 may be embodied as hardware, firmware, software, or acombination thereof. As such, in some embodiments, one or more of themodules of the environment 200 may be embodied as circuitry orcollection of electrical devices (e.g., a communication managementcircuit 210, a frame marking capability determination circuit 220, astreaming packet management circuit 230, etc.).

It should be appreciated that, in such embodiments, one or more of thecommunication management circuit 210, the frame marking capabilitydetermination circuit 220, the streaming packet management circuit 230may form a portion of one or more of the processor 110, the I/Osubsystem 112, the GPU 116, the communication circuitry 120, and/orother components of the source computing device 102. Additionally, insome embodiments, one or more of the illustrative modules may form aportion of another module and/or one or more of the illustrative modulesmay be independent of one another. Further, in some embodiments, one ormore of the modules of the environment 200 may be embodied asvirtualized hardware components or emulated architecture, which may beestablished and maintained by the processor 110 or other components ofthe source computing device 102.

In the illustrative environment 200, the source computing device 102includes frame marking capability data 202, digital content data 204,and encoder data 206, each of which may be accessed by the variousmodules and/or sub-modules of the source computing device 102. It shouldbe appreciated that the source computing device 102 may include othercomponents, sub-components, modules, sub-modules, and/or devicescommonly found in a computing device, which are not illustrated in FIG.2 for clarity of the description.

The communication management module 210, which may be embodied ashardware, firmware, software, virtualized hardware, emulatedarchitecture, and/or a combination thereof as discussed above, isconfigured to facilitate inbound and outbound wired and/or wirelesscommunications (e.g., network traffic, network packets, network flows,etc.) to and from the source computing device 102. To do so, thecommunication management module 210 is configured to receive and processnetwork packets from other computing devices (e.g., the destinationcomputing device 106 and/or other computing device(s) communicativelycoupled to the source computing device 102). Additionally, thecommunication management module 210 is configured to prepare andtransmit network packets to another computing device (e.g., thedestination computing device 106 and/or other computing device(s)communicatively coupled to the source computing device 102).

The frame marking capability determination module 220, which may beembodied as hardware, firmware, software, virtualized hardware, emulatedarchitecture, and/or a combination thereof as discussed above, isconfigured to determine whether the destination computing device 106supports end of frame detection (see also, e.g., the communication flow600 of FIG. 6 described below). In other words, the frame markingcapability determination module 220 is configured to perform acapability exchange with the destination computing device 106 todetermine whether the destination computing device 106 supports the endof frame indication (i.e., can detect and interpret the end of frameindication), such as may be included in a particular header field of thenetwork packets transmitted to the destination computing device 106.

It should be appreciated that the frame marking capability determinationmodule 220 may be configured to perform the capability exchange duringsetup of the communication channel 104. Accordingly, a frame markercapability indicator may be any type of data that indicates whether therespective computing device is configured to support end of framemarking, such as a Boolean value, for example. In such an embodiment, anot supported value, or value of “0”, may be used to indicate that endof frame marking is not supported and a supported value, or value of“1”, may be used to indicate that end of frame marking is supported.

For example, in an embodiment using the RTSP protocol to exchangecomputing device capabilities, the frame marker capability indicator maybe associated with an RTSP parameter (e.g., an “eof_mark_support”parameter) to be sent with a request message from the source computingdevice 102 and received with a response from the destination computingdevice 106 during initial configuration (i.e., negotiation and exchangeof various parameters) of a communication channel (e.g., thecommunication channel 104 of FIG. 1 ) between the source computingdevice 102 and the destination computing device 106. In someembodiments, whether the source computing device 102 supports end offrame marking, which end of frame indication(s) are supported by thesource computing device 102, whether the destination computing device106 supports end of frame marking, and/or which end of frameindication(s) are supported by the destination computing device 106 maybe stored in the frame marking capability data 202.

It should also be appreciated that, in some embodiments, one or both ofthe source computing device 102 and the destination computing device 106may support more than one end of frame indication marker. In suchembodiments, the capability exchange may further include a negotiationbetween the source computing device 102 and the destination computingdevice 106 to negotiate which end of frame indication markers aresupported and which of the supported end of frame indication markers areto be used during a particular streaming session. Accordingly, in suchembodiments, the supported end of frame indication markers (e.g., of thesource computing device 102 and/or the destination computing device 106)and/or which of the supported end of fame indication markers aredetermined to be used during the particular streaming session may bestored in the frame marking capability data 302.

The streaming packet management module 230, which may be embodied ashardware, firmware, software, virtualized hardware, emulatedarchitecture, and/or a combination thereof as discussed above, isconfigured to manage generation of a network packet that includes aheader and a payload. To do so, the illustrative streaming packetmanagement module 230 includes an encoding module 232, a packetizationmodule 234, and an end of frame marking module 236. It should beappreciated that each of the encoding module 232, the packetizationmodule 234, and/or the end of frame marking module 236 of the streamingpacket management module 230 may be separately embodied as hardware,firmware, software, virtualized hardware, emulated architecture, and/ora combination thereof. For example, the encoding module 232 may beembodied as a hardware component, while the packetization module 234and/or the end of frame marking module 236 is embodied as a virtualizedhardware component or as some other combination of hardware, firmware,software, virtualized hardware, emulated architecture, and/or acombination thereof.

The encoding module 232 is configured to encode a frame of digital mediacontent (i.e., using an encoder of the source computing device 102) tobe streamed (i.e., transmitted for display) to the destination computingdevice 106. In some embodiments, the digital media content to bestreamed may be stored in the digital content data 204. Additionally oralternatively, in some embodiments, information associated with theencoder (e.g., which encoders/decoders are supported by the sourcecomputing device 102 and/or the destination computing device 106) may bestored in the encoder data 206.

As described previously, data of a frame may have a size that is toolarge to attach as a single payload of a network packet based ontransmission size restrictions of the source computing device 102 and/orthe destination computing device 106. For example, the frame size may belarger than a predetermined maximum transmission unit. Accordingly, thepacketization module 234 (e.g., a packetizer of the source computingdevice 102) is configured to packetize the frame (i.e., the encodedframe) into a plurality of chunks, the total of which may be determinedby a function of a total size of the frame and the predetermined maximumtransmission unit size.

The packetization module 234 is further configured to attach a headerincluding identifying information to each of the chunks, forming asequence of network packets for transmission to the destinationcomputing device 106. Such packetization results in a first networkpacket that includes the first chunk of data, a number of intermediatenetwork packets that include the intermediate chunks of frame data, anda last network packet that includes the last chunk of frame datarequired to be received by the destination computing device 106 (i.e.,the end of the frame) before the destination computing device 106 candecode the frame based on the received chunks of the frame.

For example, as shown in FIG. 4 , a network packet queue 400 representsa frame to be streamed that is packetized (i.e., chunked) into fourseparate network packets (i.e., a first network packet 402, a firstintermediate network packet 404, a second intermediate network packet406, and a last network packet 408). In other words, each chunk ispacketized as a payload (i.e., a first payload 420, a first intermediatepayload 422, a second intermediate payload 424, and a last payload 426)of one of the four network packets with associated headers (i.e., afirst header 410, a first intermediate header 412, a second intermediateheader 414, and a last header 416) that are affixed to each of thepayloads 420, 422, 424, 426, to establish the network packet queue 400.

Referring back to FIG. 2 , the end of frame marking module 236 isconfigured to mark each of the network packets that include a chunk ofdata corresponding to at least a portion of a frame of digital mediacontent prior to transmission to the destination computing device 106.To do so, the end of frame marking module 236 is configured to mark thelast network packet (e.g., the last network packet 408 of FIG. 4 ), suchas by updating a predetermined field of a header of the network packet(e.g., the last header 416 of FIG. 4 ).

For example, FIG. 5 illustrates an embodiment of the container headerfields 502 of a network packet 500 using MPEG2-TS as a container forvideo and audio streams, and H.264 as the video format (i.e., the videoformat carried inside the MPEG2-TS container). The network packet 500header fields 502 include various designated fields allocated to certainbits of the header (i.e., the transport stream header) of the networkpacket as defined by the MPEG2-TS standard container format, as shown inFIG. 5 . It should be appreciated that one or more of the network packetheader fields may not be used by certain streaming specifications, suchas the single bit transport priority field 504 in the Miracast™specification (version 1.0.0 of the specification for the Wi-FiAlliance® Wi-Fi CERTIFIED Miracast™ program, a solution for wirelessvideo streaming published in 2012 by the Wi-Fi Alliance®). Accordingly,in such applications, the single bit transport priority field 504 (i.e.,as a Boolean value) may be used as an end of frame indicator. Forexample, if the network packet 500 is the last network packet of theframe (i.e., an end of frame network packet), the single bit transportpriority field 504 is set to “1”; otherwise, the single bit transportpriority field 504 is set to “0”. It should be appreciated thatadditional and/or alternative bit(s) may be used in other embodiments toindicate whether the network packet corresponds to an end of frame.

Referring now to FIG. 3 , in an illustrative embodiment, the destinationcomputing device 106 establishes an environment 300 during operation.The illustrative environment 300 includes a communication managementmodule 310, a capability negotiation module 320, and a digital mediacontent rendering module 330. The various modules of the environment 300may be embodied as hardware, firmware, software, or a combinationthereof. As such, in some embodiments, one or more of the modules of theenvironment 300 may be embodied as circuitry or collection of electricaldevices (e.g., a communication management circuit 310, a frame markingcapability determination circuit 320, a streaming packet depacketizercircuit 330, a frame management circuit 340, etc.).

It should be appreciated that, in such embodiments, one or more of thecommunication management circuit 310, the frame marking capabilitydetermination circuit 320, the streaming packet depacketizer circuit330, and the frame management circuit 340 may form a portion of one ormore of the processor 130, the I/O subsystem 132, the GPU 136, thecommunication circuitry 140, and/or other components of the destinationcomputing device 106. Additionally, in some embodiments, one or more ofthe illustrative modules may form a portion of another module and/or oneor more of the illustrative modules may be independent of one another.Further, in some embodiments, one or more of the modules of theenvironment 300 may be embodied as virtualized hardware components oremulated architecture, which may be established and maintained by theprocessor 130 or other components of the destination computing device106.

In the illustrative environment 300, the destination computing device106 includes frame marking capability data 302, accumulated payload data304, decoder data 306, and digital content data 308, each of which maybe accessed by the various modules and/or sub-modules of the destinationcomputing device 106. It should be appreciated that the destinationcomputing device 106 may include other components, sub-components,modules, sub-modules, and/or devices commonly found in a computingdevice, which are not illustrated in FIG. 3 for clarity of thedescription.

The communication management module 310, which may be embodied ashardware, firmware, software, virtualized hardware, emulatedarchitecture, and/or a combination thereof as discussed above, isconfigured to facilitate inbound and outbound wired and/or wirelesscommunications (e.g., network traffic, network packets, network flows,etc.) to and from the destination computing device 106, similar to thecommunication management module 210 of the illustrative source computingdevice 102 of FIG. 2 . To do so, the communication management module 310is configured to receive and process network packets from othercomputing devices (e.g., the source computing device 102 and/or othercomputing device(s) communicatively coupled to the destination computingdevice 106). Additionally, the communication management module 310 isconfigured to prepare and transmit network packets to another computingdevice (e.g., the source computing device 102 and/or other computingdevice(s) communicatively coupled to the destination computing device106).

The frame marking capability determination module 320, which may beembodied as hardware, firmware, software, virtualized hardware, emulatedarchitecture, and/or a combination thereof as discussed above, isconfigured to determine whether the source computing device 102 supportsend of frame marking and detection (see also, e.g., the communicationflow 600 of FIG. 6 described below), similar to the frame markingcapability determination module 220 of the illustrative source computingdevice 102 of FIG. 2 . In other words, the frame marking capabilitydetermination module 320 is configured to perform a capability exchangewith the source computing device 102 (e.g., via RTSP capabilitynegotiations) to determine whether the source computing device 102supports the end of frame indication (i.e., can detect and interpret theend of frame indication), such as may be included in a particular headerfield of the network packets received by the destination computingdevice 106. In some embodiments, whether the destination computingdevice 106 supports end of frame marking, which end of frame markingindication(s) are supported by the destination computing device 106,whether the source computing device 102 supports end of frame marking,and which end of frame marking indication(s) are supported by the sourcecomputing device 102 may be stored in the frame marking capability data302.

The streaming packet depacketizer module 330, which may be embodied ashardware, firmware, software, virtualized hardware, emulatedarchitecture, and/or a combination thereof as discussed above, isconfigured to depacketize received network packets (i.e., one or morenetwork packets including at least a portion of data corresponding to aframe). Accordingly, the streaming packet depacketizer module 330 isconfigured to strip the headers (i.e., the MPEG2-TS headers) from thereceived network packets. The streaming packet depacketizer module 330is further configured to parse a predetermined field (e.g., aspredetermined by the frame marking capability determination module 320)of the headers stripped from the received network packets (e.g., thetransport priority field 504 of FIG. 5 ) to determine whether thenetwork packet is an end of frame network packet (i.e., the last networkpacket that includes data of the frame).

To do so, the streaming packet depacketizer module 330 includes an endof frame detection module 332 that is configured to analyze thepredetermined header field to determine whether the associated networkpacket (i.e., payload of the network packet) corresponds to an end offrame. In other words, the end of frame detection module 332 isconfigured to parse the header to read a particular field of the headerto determine whether the payload of the network packet is the lastpayload necessary to decode the frame associated with the payload.

Further, the streaming packet depacketizer module 330 includes a payloadaccumulation management module 334 that is configured to manage thepayloads of the received network packets. For example, the payloadaccumulation management module 334 is configured to accumulate thepayloads of frames whose end of frame network packet has yet to bereceived. Such accumulated payloads may be stored in the accumulatedpayload data 304, in some embodiments. Further, the payload accumulationmanagement module 334 may be configured to transmit the accumulatedpayloads to the frame management module 340 upon a determination thatthe end of frame network packet has been received for that group ofaccumulated payloads.

It should be appreciated that each of the end of frame detection module332 and the payload accumulation management module 334 of the streamingpacket depacketizer module 330 may be separately embodied as hardware,firmware, software, virtualized hardware, emulated architecture, and/ora combination thereof. For example, the end of frame detection module332 may be embodied as a hardware component, while the payloadaccumulation management module 334 is embodied as a virtualized hardwarecomponent or as some other combination of hardware, firmware, software,virtualized hardware, emulated architecture, and/or a combinationthereof.

The frame management module 340, which may be embodied as hardware,firmware, software, virtualized hardware, emulated architecture, and/ora combination thereof as discussed above, is configured to receiveaccumulated payloads associated with a frame, decode the accumulatedpayloads, and render the frame. To do so, the illustrative framemanagement module 340 includes a frame decoder module 342 to decode theaccumulated payloads (i.e., at the GPU 136 of the destination computingdevice 106 of FIG. 1 ) and a frame rendering module 344 to render thedecoded frame for output at an output device of the destinationcomputing device 106 of FIG. 1 . In some embodiments, informationassociated with the decoder (e.g., which encoders/decoders are supportedby the source computing device 102 and/or the destination computingdevice 106) may be stored in the decoder data 306. Additionally oralternatively, in some embodiments, information corresponding to thedecoded frame may be stored in the digital content data 308.

Referring now to FIG. 6 , an embodiment of a communication flow 600 forframe marking capability negotiation includes the source computingdevice 102 and the destination computing device 106 communicativelycoupled over a communication channel (e.g., the communication channel104 of FIG. 1 ). The illustrative communication flow 600 includes anumber of data flows, some of which may be executed separately ortogether, depending on the embodiment. In data flow 602, as describedpreviously, the communication channel 104 (e.g., a TCP connection) isestablished between the source computing device 102 and the destinationcomputing device 106. It should be appreciated that the establishment ofthe communication channel may be predicated on a distance between thesource computing device 102 and the destination computing device 106. Itshould be further appreciated that the distance may be based on a typeand communication range associated with the communication technologyemployed in establishing the communication channel 104.

In some embodiments, the source computing device 102 and the destinationcomputing device 106 may have been previously connected to each other.In other words, the source computing device 102 and the destinationcomputing device 106 may have previously exchanged pairing data, such asmay be exchanged during a Wi-Fi® setup (e.g., manual entry of connectiondata, Wi-Fi Protected Setup (WPS), etc.) or Bluetooth® pairing (e.g.,bonding). To do so, in some embodiments, the source computing device 102or the destination computing device 106 may have been placed in adiscovery mode for establishing the connection. Additionally oralternatively, in some embodiments, the source computing device 102 andthe destination computing device 106 may use an out-of-band (OOB)technology (e.g., NFC, USB, etc.) to transfer information by a channelother than the communication channel 104. Accordingly, it should beappreciated that, in such embodiments, the information used to establishthe communication channel 104, or the OOB channel, may be stored at thesource computing device 102 and/or the destination computing device 106.

In data flow 604, the source computing device 102 transmits a message tothe destination computing device 106 (e.g., using RTSP messages) thatincludes a request for end of frame marking detection capability of thedestination computing device 106. In data flow 606, the destinationcomputing device 106 responds to the request message received from thesource computing device with a response message that includes the end offrame marking detection capability of the destination computing device106. In data flow 608, the source computing device 102 saves the end offrame marking detection capability of the destination computing device106 received in data flow 606.

It should be appreciated that, in some embodiments, more than one end offrame marking capability may be supported by the source computing device102 and/or the destination computing device 106. Accordingly, asdescribed previously, the end of frame marking detection capability mayinclude an indication as to whether the destination computing device 106supports end of frame marking, as well as an indication as to how thedestination computing device 106 supports end of frame marking (e.g., aparticular field of a container header designated as the end of framemarker). In such embodiments, a negotiation flow may be performedbetween the source computing device 102 and the destination computingdevice 106 to establish which supported end of frame marking will beused during the streaming session.

In data flow 610, the destination computing device 106 transmits amessage to the source computing device 102 that includes a request forend of frame marking detection capability of the source computing device102. In data flow 612, the source computing device 102 responds to therequest message with a response message that includes the end of framemarking detection capability of the source computing device 102. In dataflow 614, the destination computing device 106 saves the end of framemarking detection capability of the source computing device 102 receivedin data flow 612. In data flow 616, the source computing device 102 andthe destination computing device 106 establish a streaming session andinitiate the streaming of digital media content (see, e.g., the method700 of FIG. 7 and the method 800 of FIG. 8 described below).

Referring now to FIG. 7 , in use, the source computing device 102 mayexecute a method 700 for end of frame marking of digital media contentto be streamed to a destination computing device (e.g., the destinationcomputing device 106 of FIG. 1 ). It should be appreciated that acommunication channel (e.g., the communication channel 104 of FIG. 1 )has been established and capabilities have been exchanged between thesource computing device 102 and the destination computing device 106(e.g., as described in the illustrative communication flow 600 of FIG. 6).

It should be further appreciated that at least a portion of method 700may be embodied as various instructions stored on a computer-readablemedia, which may be executed by the processor 110, the GPU 116, thecommunication circuitry 120 (e.g., the NIC 122), and/or other componentsof the source computing device 102 to cause the source computing device102 to perform the method 700. The computer-readable media may beembodied as any type of media capable of being read by the sourcecomputing device 102 including, but not limited to, the memory 114, thedata storage device 118, a local memory of the MC 122 (not shown), othermemory or data storage devices of the source computing device 102,portable media readable by a peripheral device of the source computingdevice 102, and/or other media.

The method 700 begins in block 702, in which the source computing device102 determines whether to stream digital media content to thedestination computing device 106. If the source computing device 102determines not to stream digital media content to the destinationcomputing device 106 (e.g., digital media content stored on the sourcecomputing device 102 has not yet been selected for streaming), themethod 700 returns to block 702 to continue to monitor whether to streamthe digital media content. Otherwise, the method 700 advances to block704, wherein the source computing device 102 processes digital mediacontent for transmission to the destination computing device 106. To doso, in block 706, the source computing device 102 encodes a frame ofdigital media content. For example, in block 708, the source computingdevice 102 may encode the frame using an RTSP encoder, as describedpreviously.

In block 710, the source computing device 102 packetizes the encodedframe into a streaming packet. To do so, in block 712, the sourcecomputing device 102 chunks the encoded frame (see, e.g., the networkpacket queue 400 FIG. 4 ) based on a maximum transmission unit sizesupported by the destination computing device 106, as may be determinedduring the process of establishing the communication channel 104.Further, in block 714, the source computing device 102 generates apayload for each chunk of the encoded frame chunked in block 712.Additionally, in block 716, the source computing device 102 generates aheader to be affixed to each payload of the encoded frame. It should beappreciated that the payload additionally includes a header, the fieldof which are based on the encoding technology used to encode the frame,which is distinct from the header (i.e., the container header) affixedto each payload as referenced above.

In block 718, the source computing device 102 marks each network packetwith an end of frame indicator based on whether the network packetcorresponds to an end of frame. To do so, in block 720, the sourcecomputing device 102 updates a field of the header (i.e., the containerheader) of each network packet generated in block 710. For example, inblock 722, the source computing device 102 may update one or more bitsof the header field (see, e.g., the transport priority field 504 of theheader fields 502 of the network packet 500 of FIG. 5 ) as predeterminedduring a capability exchange between the source computing device 102 andthe destination computing device 106.

In block 724, the source computing device 102 transmits each of thenetwork packets to the destination computing device 106 (e.g., via aqueue of network packets). In block 726, the source computing device 102determines whether additional frames are available to transmit. If not,the method 700 returns to block 702, in which the source computingdevice 102 monitors whether to again stream digital media content.Otherwise, the method 700 loops back to block 704 to further processdigital media content for transmission to the destination computingdevice 106.

Referring now to FIG. 8 , in use, the destination computing device 106may execute a method 800 for end of frame detection of digital mediacontent streamed from a source computing device (e.g., the sourcecomputing device 102 of FIG. 1 ). It should be appreciated that acommunication channel (e.g., the communication channel 104 of FIG. 1 )has been established between the destination computing device 106 andthe source computing device 102. It should be further appreciated thatat least a portion of the method 800 may be embodied as variousinstructions stored on a computer-readable media, which may be executedby the processor 130, the GPU 136, the communication circuitry 140(e.g., the MC 142), and/or other components of the destination computingdevice 106 to cause the destination computing device 106 to perform themethod 800. The computer-readable media may be embodied as any type ofmedia capable of being read by the destination computing device 106including, but not limited to, the memory 134, the data storage device138, a local memory of the NIC 142 (not shown), other memory or datastorage devices of the destination computing device 106, portable mediareadable by a peripheral device of the destination computing device 106,and/or other media.

The method 800 begins in block 802, in which the destination computingdevice 106 determines whether a network packet that includes frame dataof digital media content to be rendered by the destination computingdevice 106 was received from the source computing device 102. If not,the method 800 loops back to block 802 to monitor whether a networkpacket was received. Otherwise, the method 800 advances to block 804,wherein the destination computing device 106 depacketizes the receivednetwork packet. To do so, in block 806, the destination computing device106 strips the transport stream header from the network packet receivedin block 802. Additionally, in block 808, the destination computingdevice 106 accumulates the payload of the received network packet withprevious encoded payloads corresponding to the frame. In other words,the destination computing device 106 stores the payload of the receivednetwork packet with other payloads of previously received networkpackets that have not yet been sent to a decoder of the destinationcomputing device 106.

In block 810, the destination computing device 106 parses the transportstream header of the received network packet to locate an end of framemarker (i.e., as described previously, an indicator as to whether thenetwork packet corresponds to an end of the frame, or the last networkpacket of the frame). For example, in block 812, in an embodiment usingan MPEG2-TS container format and an H.264 video encoding format asdescribed above, the destination computing device 106 may parse thetransport priority field 504 of the network packet 500 of FIG. 5 toretrieve the end of frame marker. In block 814, the destinationcomputing device 106 determines whether the end of frame marker parsedin block 810 corresponds to an end of frame (e.g., the end of framemarker is indicated by a “1”). If not (e.g., the end of frame marker isindicated by a “0”), the method 800 loops back to block 802; otherwise,the method 800 advances to block 816, wherein the destination computingdevice 106 decodes the accumulated payloads of the frame correspondingto the end of frame network packet. It should be appreciated that thedecoder used by the destination computing device 106 to decode theaccumulated payloads is based on the encoder used to encode the frame atthe source computing device 102.

In block 818, the destination computing device 106 renders the framefrom the decoded payloads accumulated in block 808. To do so, in someembodiments, the GPU 136 of the destination computing device 106 mayreceive the decoded frame and render the received decoded frame. Inblock 820, the destination computing device 106 presents the renderedframe via an output device (e.g., one of the peripheral devices 144) ofthe destination computing device 106. To do so, in some embodiments, theGPU 136 may provide the rendered frame to the output device of thedestination computing device 106 for display of video content on adisplay of the destination computing device 106 or producing audiblesound of audio content from a speaker of the destination computingdevice 106, for example.

EXAMPLES

Illustrative examples of the technologies disclosed herein are providedbelow. An embodiment of the technologies may include any one or more,and any combination of, the examples described below.

Example 1 includes a source computing device for end of frame marking ofstreaming digital media content, the source computing device comprisinga streaming packet management module to (i) encode a frame of digitalmedia content using an encoder, (ii) packetize the encoded frame ofdigital media content into a queue of one or more network packets usinga transport stream container, wherein each of the network packetsincludes a transport stream header and an encoded payload, wherein eachof the encoded payloads includes an encoded portion of the frame ofdigital media content, and (iii) mark the transport stream header ofeach of the network packets with an end of frame indication to indicatewhether the network packet corresponds to an end of frame networkpacket, wherein the end of frame network packet is the last packetizednetwork packet of the encoded frame of digital media content; and acommunication management module to transmit, as a function of the orderof the network packets in the queue of network packets, each of thenetwork packets to a destination computing device, wherein the networkpackets are usable by the destination computing device to render theframe of digital media content as a function of the end of frameindication.

Example 2 includes the subject matter of Example 1, and furtherincluding a frame marking capability determination module to perform,prior to having encoded the frame of digital media content, an end offrame marking capability negotiation.

Example 3 includes the subject matter of any of Examples 1 and 2, andwherein to perform the end of frame marking capability negotiationcomprises to (i) transmit a first request message for end of framemarking capabilities to the destination computing device, (ii) receive,subsequent to the transmission of the first request message, a firstresponse message from the destination computing device that includes endof frame marking capabilities supported by the destination computingdevice, and (iii) save the end of frame marking capabilities of thedestination computing device.

Example 4 includes the subject matter of any of Examples 1-3, andwherein to perform the end of frame marking capability negotiationfurther comprises to (i) receive a second request message for end offrame marking capabilities from the destination computing device and(ii) transmit, subsequent having received the second request message, asecond response message to the destination computing device thatincludes end of frame marking capabilities supported by the sourcecomputing device.

Example 5 includes the subject matter of any of Examples 1-4, andwherein to encode the frame of digital media content comprises to encodethe frame of digital media content using a video encoder.

Example 6 includes the subject matter of any of Examples 1-5, andwherein to packetize the frame of digital media content comprises tochunk the frame of digital media content into portions of the frame ofdigital media content smaller than a total size of the frame of digitalmedia content as a function of a maximum transmission unit size.

Example 7 includes the subject matter of any of Examples 1-6, andwherein to mark the transport stream header to indicate whether thenetwork packet corresponds to the end of frame network packet comprisesto mark a bit of the transport stream header corresponding to atransport priority field of an MPEG2-TS network packet header.

Example 8 includes a method for end of frame marking of streamingdigital media content, the method comprising encoding, by a sourcecomputing device, a frame of digital media content using an encoder;packetizing, by the source computing device, the encoded frame ofdigital media content into a queue of one or more network packets usinga transport stream container, wherein each of the network packetsincludes a transport stream header of the transport stream container andan encoded payload, wherein each of the encoded payloads includes anencoded portion of the frame of digital media content; marking, by thesource computing device, the transport stream header of each of thenetwork packets with an end of frame indication to indicate whether thenetwork packet corresponds to an end of frame network packet, whereinthe end of frame network packet is the last packetized network packet ofthe encoded frame of digital media content; and transmitting, by thesource computing device and as a function of the order of the networkpackets in the queue of network packets, each of the network packets toa destination computing device, wherein the network packets are usableby the destination computing device to render the frame of digital mediacontent as a function of the end of frame indication.

Example 9 includes the subject matter of Example 8, and furtherincluding performing, by the source computing device and prior toencoding the frame of digital media content, an end of frame markingcapability negotiation.

Example 10 includes the subject matter of any of Examples 8 and 9, andwherein performing the end of frame marking capability negotiationcomprises (i) transmitting a first request message for end of framemarking capabilities to the destination computing device, (ii)receiving, subsequent to transmitting the first request message, a firstresponse message from the destination computing device that includes endof frame marking capabilities supported by the destination computingdevice, and (iii) saving the end of frame marking capabilities of thedestination computing device.

Example 11 includes the subject matter of any of Examples 8-10, andwherein performing the end of frame marking capability negotiationfurther comprises (i) receiving a second request message for end offrame marking capabilities from the destination computing device and(ii) transmitting, subsequent to receiving the second request message, asecond response message to the destination computing device thatincludes end of frame marking capabilities supported by the sourcecomputing device.

Example 12 includes the subject matter of any of Examples 8-11, andwherein encoding the frame of digital media content comprises encodingthe frame of digital media content using a video encoder.

Example 13 includes the subject matter of any of Examples 8-12, andwherein packetizing the frame of digital media content compriseschunking the frame of digital media content into portions of the frameof digital media content smaller than a total size of the frame ofdigital media content as a function of a maximum transmission unit size.

Example 14 includes the subject matter of any of Examples 8-13, andwherein marking the transport stream header to indicate whether thenetwork packet corresponds to the end of frame network packet comprisesmarking a bit of the transport stream header corresponding to atransport priority field of an MPEG2-TS network packet header.

Example 15 includes a source computing device comprising a processor;and a memory having stored therein a plurality of instructions that whenexecuted by the processor cause the source computing device to performthe method of any of Examples 8-14.

Example 16 includes one or more machine readable storage mediacomprising a plurality of instructions stored thereon that in responseto being executed result in a source computing device performing themethod of any of Examples 8-14.

Example 17 includes a source computing device for end of frame markingof streaming digital media content, the source computing devicecomprising means for encoding a frame of digital media content using anencoder; means for packetizing the encoded frame of digital mediacontent into a queue of one or more network packets using a transportstream container, wherein each of the network packets includes atransport stream header of the transport stream container and an encodedpayload, wherein each of the encoded payloads includes an encodedportion of the frame of digital media content; means for marking thetransport stream header of each of the network packets with an end offrame indication to indicate whether the network packet corresponds toan end of frame network packet, wherein the end of frame network packetis the last packetized network packet of the encoded frame of digitalmedia content; and means for transmitting, as a function of the order ofthe network packets in the queue of network packets, each of the networkpackets to a destination computing device, wherein the network packetsare usable by the destination computing device to render the frame ofdigital media content as a function of the end of frame indication.

Example 18 includes the subject matter of Example 17, and furtherincluding means for performing, prior to encoding the frame of digitalmedia content, an end of frame marking capability negotiation.

Example 19 includes the subject matter of any of Examples 17 and 18, andwherein the means for performing the end of frame marking capabilitynegotiation comprises means for (i) transmitting a first request messagefor end of frame marking capabilities to the destination computingdevice, (ii) receiving, subsequent to transmitting the first requestmessage, a first response message from the destination computing devicethat includes end of frame marking capabilities supported by thedestination computing device, and (iii) saving the end of frame markingcapabilities of the destination computing device.

Example 20 includes the subject matter of any of Examples 17-19, andwherein the means for performing the end of frame marking capabilitynegotiation further comprises means for (i) receiving a second requestmessage for end of frame marking capabilities from the destinationcomputing device and (ii) transmitting, subsequent to receiving thesecond request message, a second response message to the destinationcomputing device that includes end of frame marking capabilitiessupported by the source computing device.

Example 21 includes the subject matter of any of Examples 17-20, andwherein the means for encoding the frame of digital media contentcomprises means for encoding the frame of digital media content using avideo encoder.

Example 22 includes the subject matter of any of Examples 17-21, andwherein the means for packetizing the frame of digital media contentcomprises means for chunking the frame of digital media content intoportions of the frame of digital media content smaller than a total sizeof the frame of digital media content as a function of a maximumtransmission unit size.

Example 23 includes the subject matter of any of Examples 17-22, andwherein the means for marking the transport stream header to indicatewhether the network packet corresponds to the end of frame networkpacket comprises means for marking a bit of the transport stream headercorresponding to a transport priority field of an MPEG2-TS networkpacket header.

Example 24 includes a destination computing device for end of framedetection of streaming digital media content, the destination computingdevice comprising a communication management module to receive a networkpacket from a source computing device, wherein the network packetincludes a transport stream header and an encoded payload, wherein theencoded payload includes at least a portion of an encoded frame ofdigital media content; a streaming packet depacketizer module to (i)de-packetize the network packet, (ii) accumulate the encoded payload ofthe de-packetized network packet with one or more previously receivedencoded payloads of other de-packetized network packets corresponding tothe same encoded frame of digital media content, (iii) parse thetransport stream header of the network packet for an end of framemarker, and (iv) determine whether the end of frame marker correspondsto an end of frame network packet; a frame management module to decode,in response to a determination that the end of frame marker correspondsto an end of frame network packet, the accumulated encoded payloadscorresponding to the same encoded frame of digital media content.

Example 25 includes the subject matter of Example 24, and furtherincluding a frame marking capability determination module to perform,prior to having received the network packet from the source computingdevice, an end of frame marking capability negotiation.

Example 26 includes the subject matter of any of Examples 24 and 25, andwherein to perform the end of frame marking capability negotiationcomprises to (i) receive a first request message for end of framemarking capabilities from the source computing device and (ii) transmit,subsequent having received the first request message, a first responsemessage to the source computing device that includes end of framemarking capabilities supported by the destination computing device.

Example 27 includes the subject matter of any of Examples 24-26, andwherein to perform the end of frame marking capability negotiationfurther comprises to (i) transmit a second request message for end offrame marking capabilities to the source computing device, (ii) receive,subsequent to the transmission of the second request message, a secondresponse message from the source computing device that includes end offrame marking capabilities supported by the source computing device, and(iii) save the end of frame marking capabilities of the source computingdevice.

Example 28 includes the subject matter of any of Examples 24-27, andwherein to parse the transport stream header of the network packet forthe end of frame marker comprises to parse a bit of the transport streamheader corresponding to a transport priority field of an MPEG2-TSnetwork packet header.

Example 29 includes the subject matter of any of Examples 24-28, andwherein the plurality of instructions further cause the destinationcomputing device to render, subsequent to having decoded the accumulatedpayloads, a frame of digital media content as a function of the decodedaccumulated payloads.

Example 30 includes the subject matter of any of Examples 24-29, andwherein the frame management module is further to transmit, subsequentto having rendered the frame of digital media content, the frame ofdigital media content for display to an output device of the destinationcomputing device.

Example 31 includes a method for end of frame detection of streamingdigital media content, the method comprising receiving, by thedestination computing device, a network packet from a source computingdevice, wherein the network packet includes a transport stream headerand an encoded payload, wherein the encoded payload includes at least aportion of an encoded frame of digital media content; de-packetizing, bythe destination computing device, the network packet; accumulating, bythe destination computing device, the encoded payload of thede-packetized network packet with one or more previously receivedencoded payloads of other de-packetized network packets corresponding tothe same encoded frame of digital media content; parsing, by thedestination computing device, the transport stream header of the networkpacket for an end of frame marker; determining, by the destinationcomputing device, whether the end of frame marker corresponds to an endof frame network packet; decoding, by the destination computing deviceand in response to a determination that the end of frame markercorresponds to an end of frame network packet, the accumulated encodedpayloads corresponding to the same encoded frame of digital mediacontent.

Example 32 includes the subject matter of Example 31, and furtherincluding performing, by the destination computing device and prior tohaving received the network packet from the source computing device, anend of frame marking capability negotiation.

Example 33 includes the subject matter of any of Examples 31 and 32, andwherein performing the end of frame marking capability negotiationcomprises (i) receiving a first request message for end of frame markingcapabilities from the source computing device and (ii) transmitting,subsequent having received the first request message, a first responsemessage to the source computing device that includes end of framemarking capabilities supported by the destination computing device.

Example 34 includes the subject matter of any of Examples 31-33, andwherein performing the end of frame marking capability negotiationfurther comprises (i) transmitting a second request message for end offrame marking capabilities to the source computing device, (ii)receiving, subsequent to the transmission of the second request message,a second response message from the source computing device that includesend of frame marking capabilities supported by the source computingdevice, and (iii) saving the end of frame marking capabilities of thesource computing device.

Example 35 includes the subject matter of any of Examples 31-34, andwherein parsing the transport stream header of the network packet forthe end of frame marker comprises parsing a bit of the transport streamheader corresponding to a transport priority field of an MPEG2-TSnetwork packet header.

Example 36 includes the subject matter of any of Examples 31-35, andfurther including rendering, by the destination computing device andsubsequent to decoding the accumulated payloads, a frame of digitalmedia content as a function of the decoded accumulated payloads.

Example 37 includes the subject matter of any of Examples 31-36, andfurther including displaying, by the destination computing device andsubsequent to rendering the frame of digital media content, the frame ofdigital media content via an output device of the destination computingdevice.

Example 38 includes a destination computing device comprising aprocessor; and a memory having stored therein a plurality ofinstructions that when executed by the processor cause the destinationcomputing device to perform the method of any of Examples 31-37.

Example 39 includes one or more machine readable storage mediacomprising a plurality of instructions stored thereon that in responseto being executed result in a destination computing device performingthe method of any of Examples 31-37.

Example 40 includes a destination computing device for end of framedetection of streaming digital media content, the destination computingdevice comprising means for receiving a network packet from a sourcecomputing device, wherein the network packet includes a transport streamheader and an encoded payload, wherein the encoded payload includes atleast a portion of an encoded frame of digital media content; means forde-packetizing the network packet; means for accumulate the encodedpayload of the de-packetized network packet with one or more previouslyreceived encoded payloads of other de-packetized network packetscorresponding to the same encoded frame of digital media content; meansfor parsing the transport stream header of the network packet for an endof frame marker; means for determining whether the end of frame markercorresponds to an end of frame network packet; means for decoding, inresponse to a determination that the end of frame marker corresponds toan end of frame network packet, the accumulated encoded payloadscorresponding to the same encoded frame of digital media content.

Example 41 includes the subject matter of Example 40, and furtherincluding means for performing, prior to having received the networkpacket from the source computing device, an end of frame markingcapability negotiation.

Example 42 includes the subject matter of any of Examples 40 and 41, andwherein the means for performing the end of frame marking capabilitynegotiation comprises means for (i) receiving a first request messagefor end of frame marking capabilities from the source computing deviceand (ii) transmitting, subsequent having received the first requestmessage, a first response message to the source computing device thatincludes end of frame marking capabilities supported by the destinationcomputing device.

Example 43 includes the subject matter of any of Examples 40-42, andwherein the means for performing the end of frame marking capabilitynegotiation further comprises means for (i) transmitting a secondrequest message for end of frame marking capabilities to the sourcecomputing device, (ii) receiving, subsequent to the transmission of thesecond request message, a second response message from the sourcecomputing device that includes end of frame marking capabilitiessupported by the source computing device, and (iii) saving the end offrame marking capabilities of the source computing device.

Example 44 includes the subject matter of any of Examples 40-43, andwherein the means for parsing the transport stream header of the networkpacket for the end of frame marker comprises parsing a bit of thetransport stream header corresponding to a transport priority field ofan MPEG2-TS network packet header.

Example 45 includes the subject matter of any of Examples 40-44, andfurther including means for rendering, subsequent to decoding theaccumulated payloads, a frame of digital media content as a function ofthe decoded accumulated payloads.

Example 46 includes the subject matter of any of Examples 40-45, andfurther including means for displaying, subsequent to rendering theframe of digital media content, the frame of digital media content viaan output device of the destination computing device.

What is claimed is:
 1. A source compute device comprising: at least onememory; instructions in the source compute device; and at least oneprocessor to execute the instructions to at least: encode a frame ofdigital media to generate an encoded frame; packetize the encoded frameinto a queue of network packets, ones of the network packets includingrespective transport stream headers and respective encoded payloads, therespective encoded payloads including corresponding encoded portions ofthe frame of digital media; mark the respective transport stream headersof the network packets with respective end of frame indicators toindicate which one of the network packets corresponds to an end of framenetwork packet, the end of frame network packet to be a last networkpacket of the encoded frame; and cause the source compute device totransmit, based on an order of the network packets in the queue ofnetwork packets, the network packets to a destination compute device. 2.The source compute device of claim 1, wherein the at least one processoris to perform an end of frame marking capability negotiation with thedestination compute device prior to encoding the frame of digital media.3. The source compute device of claim 2, wherein to perform the end offrame marking capability negotiation, the at least one processor is to:cause the source compute device to transmit a first request message forend of frame marking capabilities to the destination compute device;access, subsequent to transmission of the first request message, a firstresponse message from the destination compute device, the first responsemessage to include end of frame marking capabilities supported by thedestination compute device; and store the end of frame markingcapabilities of the destination compute device in the at least onememory.
 4. The source compute device of claim 3, wherein to perform theend of frame marking capability negotiation, the at least one processoris further to: access a second request message for end of frame markingcapabilities from the destination compute device; and cause the sourcecompute device to transmit, subsequent to receipt of the second requestmessage, a second response message to the destination compute device,the second response message to include end of frame marking capabilitiessupported by the source compute device.
 5. The source compute device ofclaim 1, wherein to packetize the frame of digital media, the at leastone processor is to chunk the frame of digital media into portions ofthe frame of digital media smaller than a total size of the frame ofdigital media, the portions of the frame of digital media based on amaximum transmission unit size.
 6. The source compute device of claim 1,wherein to mark the respective transport stream headers of the networkpackets, the at least one processor is to mark a bit of the respectivetransport stream headers, the bit corresponding to a transport priorityfield of an MPEG2-TS network packet header.
 7. The source compute deviceof claim 1, wherein the destination compute device is to render theframe of digital media based on the respective end of frame indicatorsincluded in the respective transport stream headers of the networkpackets.
 8. A method for a source compute device, the method comprising:encoding a frame of digital media to generate an encoded frame;packetizing the encoded frame into a queue of network packets, ones ofthe network packets including respective transport stream headers andrespective encoded payloads, the respective encoded payloads includingcorresponding encoded portions of the frame of digital media; markingthe respective transport stream headers of the network packets withrespective end of frame indicators to indicate which one of the networkpackets corresponds to an end of frame network packet, the end of framenetwork packet to be a last network packet of the encoded frame; andtransmitting, based on an order of the network packets in the queue ofnetwork packets, the network packets to a destination compute device. 9.The method of claim 8, further including performing an end of framemarking capability negotiation with the destination compute device priorto the encoding of the frame of digital media.
 10. The method of claim9, wherein the performing of the end of frame marking capabilitynegotiation includes: transmitting a first request message for end offrame marking capabilities to the destination compute device; receiving,subsequent to the transmitting of the first request message, a firstresponse message from the destination compute device, the first responsemessage including end of frame marking capabilities supported by thedestination compute device; and storing the end of frame markingcapabilities of the destination compute device.
 11. The method of claim10, wherein the performing of the end of frame marking capabilitynegotiation further includes: receiving a second request message for endof frame marking capabilities from the destination compute device; andtransmitting, subsequent to receipt of the second request message, asecond response message to the destination compute device, the secondresponse message including end of frame marking capabilities supportedby the source compute device.
 12. The method of claim 8, wherein thepacketizing of the frame of digital media includes chunking the frame ofdigital media into portions of the frame of digital media smaller than atotal size of the frame of digital media, the portions of the frame ofdigital media based on a maximum transmission unit size.
 13. The methodof claim 8, wherein the marking of the respective transport streamheaders of the network packets includes marking a bit of the respectivetransport stream headers, the bit corresponding to a transport priorityfield of an MPEG2-TS network packet header.
 14. A destination computedevice comprising: at least one memory; instructions in the destinationcompute device; and at least one processor to execute the instructionsto at least: access a network packet from a source compute device, thenetwork packet to include a transport stream header and an encodedpayload, the encoded payload to include at least a portion of an encodedframe of digital media; de-packetize the network packet; store theencoded payload of the de-packetized network packet with one or moreencoded payloads of prior de-packetized network packets corresponding tothe encoded frame of digital media; parse the transport stream header ofthe network packet for an end of frame marker; determine whether the endof frame marker corresponds to an end of frame network packet; and inresponse to a determination that the end of frame marker corresponds tothe end of frame network packet, decode the stored encoded payloadscorresponding to the encoded frame of digital media to generate decodedpayloads corresponding to the encoded frame of digital media.
 15. Thedestination compute device of claim 14, wherein the at least oneprocessor is to perform an end of frame marking capability negotiationwith the source compute device prior to receipt of the network packetfrom the source compute device.
 16. The destination compute device ofclaim 15, wherein to perform the end of frame marking capabilitynegotiation, the at least one processor is to: access a first requestmessage for end of frame marking capabilities from the source computedevice; and cause the destination compute device to transmit, subsequentto receipt of the first request message, a first response message to thesource compute device, the first response message to include end offrame marking capabilities supported by the destination compute device.17. The destination compute device of claim 16, wherein to perform theend of frame marking capability negotiation, the at least one processoris further to: cause the destination compute device to transmit a secondrequest message for end of frame marking capabilities to the sourcecompute device; access, subsequent to transmission of the second requestmessage, a second response message from the source compute device, thesecond response message to include end of frame marking capabilitiessupported by the source compute device; and store the end of framemarking capabilities of the source compute device in the at least onememory.
 18. The destination compute device of claim 14, wherein to parsethe transport stream header of the network packet for the end of framemarker, the at least one processor is to parse a bit of the transportstream header, the bit corresponding to a transport priority field of anMPEG2-TS network packet header.
 19. The destination compute device ofclaim 14, wherein the at least one processor is to render a frame ofdigital media based on the decoded payloads.
 20. The destination computedevice of claim 14, wherein the at least one processor is to provide therendered frame of digital media to an output device of the destinationcompute device, the output device to display the rendered frame ofdigital media.